草庐IT

Java Applet 不缓存

全部标签

java - 用于 Java 的开源分布式缓存

可以在Java中使用的最好的开源分布式缓存是什么?我以为是EHCache,但显然只有在使用商业产品TerracottaServerArray时才能在多个节点上进行扩展。我的目标是为有一定延迟的实时流数据构建缓存,我实际估计的数据大小在8gb量级,而生产速度要慢得多,在3mb量级每秒。因为有一个初始延迟,我希望我的缓存也被复制,因为当从0开始时我的缓存需要一个预热期,我非常想避免这一点。 最佳答案 Memcached值得研究。 关于java-用于Java的开源分布式缓存,我们在StackO

java - 通过外部属性禁用 spring 方法缓存

我使用ehcache和注释驱动配置配置了spring方法缓存。但是我希望能够从我们在应用程序中使用的配置文件中禁用它。我的第一个想法是在方法缓存被禁用时不带任何参数地调用net.sf.ehcache.CacheManager.CacheManager()。这会引发异常:java.lang.IllegalArgumentException:loadCachesmustnotreturnanemptyCollectionatorg.springframework.util.Assert.notEmpty(Assert.java:268)atorg.springframework.cache

java - 进程内缓存 vs 分布式缓存与可变/不可变对象(immutable对象)的一致性

我听我的同事说,在缓存immutable对象时,进程内缓存是更好的选择,因为一致性不是大问题(最终一致性)。而外部分布式缓存更适合您始终希望读取保持一致(强)的可变对象。这总是事实吗?我真的不明白可变性与一致性有何关系。有人可以帮助我理解这一点吗? 最佳答案 当您使用分布式缓存时,每个对象都在多个独立机器、多个缓存节点之间复制。如果您的对象是不可变的,复制就不是问题:因为对象永远不会改变,所以任何缓存实例都将提供完全相同的对象。一旦对象变得可变,就会出现一致性问题:当您向缓存实例请求对象时,您如何确定交付给您的对象是最新的?如果在一

java - Lucene 似乎在缓存搜索结果——为什么?

在我的项目中,我们使用Lucene2.4.1进行全文搜索。这是一个J2EE项目,IndexSearcher创建一次。在后台,索引每两分钟刷新一次(当内容改变时)。用户可以通过页面上的搜索机制搜索索引。问题是,Lucene返回的结果似乎以某种方式被缓存了。这是我注意到的场景:我启动应用程序并搜索“关键字”-返回了6个结果,索引已刷新,使用Luke我看到,现在有8个结果可以查询“关键字”,我再次使用该应用程序进行搜索,再次返回6个结果。我分析了我们的配置,并没有在任何地方发现任何缓存。我调试了搜索,输出代码中没有缓存,searcher.search返回6个结果。Lucene是否以某种方式在

Java Tomcat 启用缓存

在tomcat上设置缓存的最佳方法是什么?还有缓存是如何工作的?它是基于url,基于目录还是什么?我需要特定于url的缓存,这样数据库就不会对相同的url进行相同的计算 最佳答案 最简单的方法是使用专用的网络缓存提供程序。Tomcat没有OOTB,但您可以使用Apachewithmod_cache(显然是mod_jk)。在此配置中,Apache倾向于充当缓存由Tomcat提供的动态内容的代理缓存;您必须确保Tomcat提供正确的header以确保Apache缓存响应。还有其他商业网络缓存解决方案,但它们通常用于高端用途。您还可以使用

java - Hibernate 二级缓存似乎不起作用

我目前正在尝试使用hibernate附带的缓存提供程序让hibernate工作。net.sf.ehcache.hibernate.SingletonEhCacheProvider我在我的hibernate.cfg.xml文件中引用的ecache.xml中启用了默认缓存和类特定缓存。类/映射文件特定缓存被定义为处理多达20000个对象。但是,自从我在我用来测试它的映射文件之一上打开缓存映射后,我没有看到任何性能提升。我的测试如下。加载特定映射文件im测试的10000个对象(这应该会影响数据库并成为瓶颈)。接下来我去加载相同的10000个对象,因为此时我希望缓存被命中并看到显着的性能提升。

java - java.lang.String 的哈希码真的被缓存了吗?

Strings1="String1";System.out.println(s1.hashCode());//returnanintegeri1Fieldfield=String.class.getDeclaredField("value");field.setAccessible(true);char[]value=(char[])field.get(s1);value[0]='J';value[1]='a';value[2]='v';value[3]='a';value[4]='1';System.out.println(s1.hashCode());//returnsameval

java - 使用 ConcurrentHashMap 缓存

我有以下代码:publicclassCache{privatefinalMapmap=newConcurrentHashMap();publicObjectget(Objectkey){Objectvalue=map.get(key);if(value==null){value=newSomeObject();map.put(key,value);}returnvalue;}}我的问题是:map的put和get方法是线程安全的,但由于整个block未同步-多个线程可以添加相同的键两次吗? 最佳答案 put和get是线程安全的,因为从

java - hibernate 缓存和 Spring 框架缓存有什么区别?

我有一个应用程序,可以从数据库中获取数据(使用hibernate)。我想每天一次用数据库状态加载缓存(每个用户),然后改用缓存。我将Spring框架与Hibernate一起使用,我知道它们都有一些缓存的可能性。它们之间有什么区别?什么是更好的选择? 最佳答案 StartingwithHibernatecacheisamoreprudentdecisioninmyview,especiallybecausethetwodon'texcludeeachother.IntermsofperformanceSpringcachecanoff

从文件读取时的 java.net.URL 缓存

似乎java正在对URL(和文件)进行某种缓存。例如我的类路径中的jar文件中有一个文件“resourcs.txt”。这个文件的内容是:“版本1”newjava.io.BufferedReader(newjava.io.InputStreamReader(newURL("jar","","file:test.jar!/resourcs.txt").openConnection().getInputStream())).readLine()返回“版本1”(如预期的那样)我将文件内容更改为“版本2”并再次调用此代码。我仍然得到“版本1”我怎样才能清除这个“缓存”。注意:我发现它只发生在Li